class string
{
public:
	string(const char* str = "")
	{
		if (nullptr == str) str = "";
		_str = new char[strlen(str) + 1];
		strcpy(_str, str);
	}

	string(const string& s) :_str(nullptr)
	{
		string strTmp(s._str);
		swap(_str, strTmp._str);
	}

	string& operator=(string s)
	{
		swap(_str, s._str);
		return *this;
	}

	~string()
	{
		if (_str)
		{
			delete[] _str;
			_str = nullptr;
 		}
	}
private:
	char* _str;
};
